View
這邊要注意的是form標籤
1.action屬性裏頭的Url.Action("Doregister", "Home")代表的意思是將參數傳送至HomeController的Doregister
2.imput屬性中的name="Account"、name="Password",其中這兩個的名稱對應到的是Controller中的public ActionResult Doregister(string Account,string Password),一定要完全相同,不然會接收不到。
3.在最底下的div標籤是用來顯示錯誤訊息用的,TempData[""]也是用於前後端接收訊息使用的方式
@{
ViewBag.Title = "Register";
}
<h2>Register</h2>
<form action="@Url.Action("Doregister", "Home")" method="post">
<div class="form-group">
<label for="Account">Account</label>
<!--帳號輸入框-->
<input type="text" class="form-control" id="Account" name="Account" placeholder="Enter your account" required />
</div>
<!--密碼輸入框-->
<div class="form-group">
<label for="Password">Password</label>
<input type="password" class="form-control" id="Password" name="Password" placeholder="Enter your password" required />
</div>
<button type="submit" class="btn btn-primary">Register</button>
</form>
<div style="color: red; margin-top: 10px;">@TempData["Errmsg"]</div>
</div>
Controller
1.public ActionResult Doregister(string Account,string Password)用來接收view傳過來的參數
2."select Account from Login where Account=@Account"這句SQL語法的意思是在Login這張表當中查詢Account欄位,但只需要Account=@Account與我輸入的值相同的就行
3. cmd.Parameters.AddWithValue("@Account", Account);輸入的值就是在view中接收到的值
4. if有查詢到就代表此帳號已存在,則使用TempData傳送警示訊息並重新刷新頁面
5. 如果沒有這組帳號則insert into使用者輸入的這組帳號密碼,最後使用 ins.ExecuteNonQuery();來執行語法
//需要兩個參數:帳號、密碼
public ActionResult Doregister(string Account,string Password)
{
//資料庫連接字串
string connstr = "Data Source=CSIE-TEST2;Initial Catalog=Student_data;User ID=TEST03;Password=1qaz@WSX;Encrypt=False";
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
//抓取帳號欄位,條件設置為如果有某筆資料的帳號=輸入的帳號
SqlCommand cmd = new SqlCommand("select Account from Login where Account=@Account");
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@Account", Account);
SqlDataAdapter adpt = new SqlDataAdapter();
DataSet ds = new DataSet();
adpt.SelectCommand = cmd;
adpt.Fill(ds);
//如果有有資料則代表帳號有人使用過了
if (ds.Tables[0].Rows.Count > 0)
{
TempData["Errmsg"] = "帳號已存在";
return RedirectToAction("Register");
}
//若沒有則創建這組帳號密碼
else
{
//在資料庫中INSERT這組帳號密碼
SqlCommand ins = new SqlCommand("INSERT INTO Login (Account, Password) VALUES (@Account, @Password)");
ins.Parameters.AddWithValue("@Account", Account);
ins.Parameters.AddWithValue("@Password",Password);
ins.Connection = conn;
ins.ExecuteNonQuery();
}
return RedirectToAction("login");
}
測試
輸入已存在的帳號密碼然後按下送出
以及註冊新的帳號密碼
在資料庫中查看是否有創建成功